#include <stdio.h>
//引入bool类型
#include <stdbool.h>
//此库包含malloc函数
#include <stdlib.h>

//给链表中元素类型起别名，方便修改
#define ElementType int

/**
 * 判断某节点是否为尾结点
 *      该结点的next是否指向头结点
 * 判断表是否为空
 *      头结点的next是否指向头结点
 * 尾节点后插入
 * 删除尾节点
 * 
 * 注意：尾节点的next指向头结点，而不是第一个元素结点
 * */
typedef struct DNode {
    ElementType Data;
    struct LNode * Prior;
    struct LNode * Next;
} DNode, *DLinkList;

//初始化链表
DLinkList List_init();
//头插法
DLinkList List_HeadInsert(DLinkList L);
//尾插法
DLinkList List_TailInsert(DLinkList L);
//一般插入
DLinkList List_Insert(DLinkList L);
//按序号查找结点值
DLinkList GetElem(DLinkList L, ElementType i);
//按值查找表结点
DLinkList LocateElem(DLinkList L, ElementType i);
//删除结点
bool List_Delete(DLinkList L, ElementType i);
//获取表长
int getLength(DLinkList L);

int main() {
    printf("test");
    return 0;
}

DLinkList List_init() {
    //创建并初始化头结点
    DLinkList dL = (DLinkList)malloc(sizeof(struct DNode));
    //头结点next指向NULL
    dL->Next = NULL;
    return dL;
}

DLinkList List_HeadInsert(DLinkList L) {
    DLinkList dL = (DLinkList)malloc(sizeof(struct DNode));
    dL->Data = 1;
    //dL的后继结点指向NULL
    dL->Next = NULL;
    //
    dL->Prior = L;
    L->Next = dL;
    return L;
}